package com.cyan.note.service;

import com.cyan.note.dto.admin.ShopCreateRequest;
import com.cyan.note.dto.admin.ShopResponse;
import com.cyan.note.dto.admin.ShopUpdateRequest;
import java.util.List;

/**
 * 店铺服务接口
 * 超级管理员专用 - 严格遵循数据隔离原则
 * 
 * @author ZhangzhenYu
 * @since 2025-01-14
 */
public interface ShopService {

    /**
     * 查询所有店铺基础信息（超级管理员可访问）
     */
    List<ShopResponse> getAllShops();

    /**
     * 根据状态查询店铺列表
     */
    List<ShopResponse> getShopsByStatus(String status);

    /**
     * 根据ID查询店铺基础信息
     */
    ShopResponse getShopById(Long id);

    /**
     * 创建新店铺（仅基础信息）
     */
    ShopResponse createShop(ShopCreateRequest request);

    /**
     * 更新店铺基础信息（仅超级管理员可修改的字段）
     */
    ShopResponse updateShop(ShopUpdateRequest request);

    /**
     * 更新店铺状态
     */
    boolean updateShopStatus(Long id, String status);

    /**
     * 删除店铺（系统级删除）
     */
    boolean deleteShop(Long id);

    /**
     * 检查店铺编号是否已存在
     */
    boolean isCodeExists(String code);

    /**
     * 检查店铺编号是否已存在（排除指定店铺）
     */
    boolean isCodeExists(String code, Long excludeId);
}